
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;

import javax.swing.*;

/**
 *
 * @author Asia
 */
public class TFrame extends JFrame implements ActionListener{//extendowanie wątku
   
    
    //GameIsOn metoda do liczenia rund które już przeszły, boole, jak więcej niż 3 to koniec i false
 
    JButton AcceptSum, Exchange, All, Out, NewGame, Check;
    JLabel TableCash, Account, Round, Communicate, You;
    JTextField Sum;
    JFrame window;
    JCheckBox card1, card2, card3, card4;

    int money=0, bank=0, adventurer=0;
    int roundCounter=0, check=0;
    int NumberOfPlayers; //ściągnąć dane z klienta
    int vertical=0, horisontal=0;
    
    int[][] tablica;
    
    JLabel[] labelek;
    
    String player="";
    
    //wszystkie współrzędne są niepoustawiane, bo na razie chcę żeby cokolwiek działało XD
    public TFrame()
    {
        window=new JFrame();
        window.setTitle("BadugiTable");
        window.setSize(1800,1000);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        window.setLayout(null);
        
        Sum=new JTextField("");
        Sum.setBounds(130,20,150,20);
        window.add(Sum);
        
        You=new JLabel("YOU");
        You.setBounds(50,70,150,20);
        window.add(You);
        
        Round=new JLabel("Account State");
        Round.setBounds(50,70,150,20);
        window.add(Round);
        
        Communicate=new JLabel("xxx");
        Communicate.setBounds(50,70,150,20);
        window.add(Communicate);
        
        Account=new JLabel("Account State");
        Account.setBounds(50,70,150,20);
        window.add(Account);
        
        TableCash=new JLabel("Current Sum");
        TableCash.setBounds(50,70,150,20);
        window.add(TableCash);
        
        NewGame=new JButton("New Game");
        NewGame.setBounds(130,45,150,20);
        window.add(NewGame);
        NewGame.addActionListener(this);
        
        Check=new JButton("Change Cards");
        Check.setBounds(130,45,150,20);
        window.add(Check);
        Check.addActionListener(this);
        
        Exchange=new JButton("Change Cards");
        Exchange.setBounds(130,45,150,20);
        window.add(Exchange);
        Exchange.addActionListener(this);
        
        All=new JButton("All in");
        All.setBounds(130,45,150,20);
        window.add(All);
        All.addActionListener(this);        
        
        Out=new JButton("Out");
        Out.setBounds(130,90,150,20);
        window.add(Out);
        Out.addActionListener(this);
        
        AcceptSum=new JButton("Out");
        AcceptSum.setBounds(130,90,150,20);
        window.add(AcceptSum);
        AcceptSum.addActionListener(this);
        
        card1=new JCheckBox("Out");
        card1.setBounds(130,90,150,20);
        window.add(card1);
        card1.addItemListener(card);
        
        
        
         window.setVisible(true);
        // getFrame().setResizeable(false);
    }
    
    public static void main(String[] args)
    {
        new TFrame();
    }
    
    public void itemStateChanged()
    {
        if(card1.isSelected())// x4
        {
        //bierz nową kartę ze stosu
        //card1 na spód talii
        }
    }
    
    public void actionPerformed(ActionEvent e)
    {
        
        Object sourcek=e.getSource();
        
        if(sourcek==All)
        {
            bank=Integer.parseInt(TableCash.getText());
            money=Integer.parseInt(Account.getText());
            bank=bank+money;
            money=0;
            Account.setText(Integer.toString(money));
            Table.setText(Integer.toString(bank)));
            
            while(roundCounter==3)
            {
            	Thread.sleep();
            }   
        }
        
        if(sourcek==Out)
        {
            bank=Integer.parseInt(TableCash.getText());
            money=Integer.parseInt(Account.getText());
            All.setEnabled(false);
            AcceptSum.setEnabled(false);
            Sum.setEditable(false);         
            //
            //stopowanie wątku, czeka aż Round przejdzie na 3 czy automatyczne wyjście?  
        }
        
        if(sourcek==AcceptSum)
        {
            Communicate.setText("");
            bank=Integer.parseInt(TableCash.getText());
            money=Integer.parseInt(Account.getText());
            adventurer=Integer.parseInt(Sum.getText());
                if(adventurer<money)
                {
                bank=bank+adventurer;
                money=money-adventurer;
                TableCash=Integer.toString(bank);
                Account=Integer.toString(money);
                }
                else
                {
                Communicate.setText("Too little money. Choose All-in or Out");
                }
                Account.setText(Integer.toString(money));
                TableCash.setText(Integer.toString(bank)));
                
            //przekazanie pałeczki następnemu graczowi 
        }
        if(sourcek==Exchange)
        {
            itemStateChanged();
        }
        
         if(sourcek==Check)
        {
            check=check+1;
        }
        
        else if(sourcek==NewGame)
        {
            if(GameIsOn()==true)
            {
            Communicate.setText("wait till game is over");
            }
            else
            {
            System.exit(0);
            ClientS CS=new ClientS();
            }
        }
        
    }
    
    public void PlayersPosition ()
    {        
        for(int i=0; i<NumberOfPlayers-1; i++)
        {                   
            player=player +1;
            horisontal=120+(10*i);// dobrać współrzędne
            labelek[i]=new JLabel(player);
            labelek[i].setBounds(horisontal,800,200,10);
            window.add(labelek[i]);                      
        }      
        //nie zabardzo wiem w której klasie i jak zaimplementować działania innych klientów
        // bo rozumiem że na jednym stole może grać 6 HumanPlayersów
    }
    
    public boolean GameIsOn()
    {
      if(roundCounter==3)
    	  return false;
      
      return true;
    }
    
    public void NextRound()
    {
        //if(NumberOfPlayers.equals(check))
        //roundCounter=roundCounter+1;
    }
    
    public void CheckCounter()
    {
        //napisać  dla wszystkich playerów czekujących w po kolei
        //gdy ktoś podbije stawkę check=0
    }
}
